給定三元序對
sparse1 = [
[5, 6, 4],
[1, 2, 3],
[2, 1, 6],
[3, 1, 9],
[4, 5, 12]
]
轉換成一般矩陣
def restore(sparse): #三元序對轉為稀疏矩陣
row = sparse[0][0]
column = sparse[0][1]
array = [[0] *column for i in range(row)] #先建立空陣列,每一列有 column個0*共有row列
k = 1 #從第一列開始 而非第0列開始
while k<=sparse[0][2]:
array[sparse[k][0]][sparse[k][1]]=sparse[k][2]
k+=1
return array
將一般矩陣轉換成三元序對
def store(array): #將稀疏矩陣儲存三元序對
row=len(array) #計算三元陣列的total row
column=len(array[0]) #計算三元陣列的total column
s=[] #建立空的陣列
count=0 #計算所有非0值
for i in range(row): #計算所有非0值
for j in range(column):
if array[i][j]!=0:
count+=1
s.append([row,column,count]) #儲存總數
for i in range(row): #將非0值儲存成三元序對
for j in range(column):
if array[i][j] !=0:
s.append([i,j,array[i][j]])
return s
看結果
array = restore(sparse1)
print("給定三元序對,還原矩陣:",array)
store(array)
three=store(array)
print("給定稀疏矩陣,轉成三元序對:",three)#依照row major 排序